package tag28_19_08.serial;

import java.io.Serializable;
import java.io.*;

public class Ser05_Deserialisieren {
	
	static class Fahrzeug {
		int baujahr;
		
		public Fahrzeug(int baujahr) {
			this.baujahr = baujahr;
			System.out.println("Konstruktor Fahrzeug (int)");
		}
		
		public Fahrzeug() {
			System.out.println("Konstruktor Fahrzeug");
		}
	}
	
	static class Auto extends Fahrzeug implements Serializable {
		public Auto() {
			super(2000);
			System.out.println("Konstruktor Auto");
		}
	}

	
	public static void main(String[] args) throws Exception {
		
		Auto obj1 = new Auto();
		
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a2"));
		oos.writeObject(obj1);
		oos.close();

		System.out.println("Serialisiert: " + obj1);

		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a2"));
		
		//- kein Konstruktor-Aufruf Auto
		//- no-args-Konstruktor der Klasse Fahrzeug aufgerufen
		Object obj2 = (Auto) ois.readObject(); //Exception, wenn Fahrzeug keinen no-args-Konstruktor hat
		ois.close();

		System.out.println("Deserialisieret: " + obj2);
		
	}

}
